}
else if (GTK_IS_CSS_STYLE_PROPERTY (prop))
{
+ g_return_if_fail (_gtk_css_style_property_is_specified_type (GTK_CSS_STYLE_PROPERTY (prop),
+ G_VALUE_TYPE (&value->value)));
+
_gtk_bitmask_set (ruleset->set_styles,
_gtk_css_style_property_get_id (GTK_CSS_STYLE_PROPERTY (prop)),
TRUE);
#include "gtkprivatetypebuiltins.h"
#include "gtkstylepropertiesprivate.h"
+#include <cairo-gobject.h>
#include "gtkcssimagegradientprivate.h"
#include "gtkcssimageprivate.h"
return G_VALUE_TYPE (&property->initial_value);
}
+gboolean
+_gtk_css_style_property_is_specified_type (GtkCssStyleProperty *property,
+ GType type)
+{
+ g_return_val_if_fail (GTK_IS_CSS_STYLE_PROPERTY (property), FALSE);
+
+ /* If it's our specified type, of course it's valid */
+ if (type == G_VALUE_TYPE (&property->initial_value))
+ return TRUE;
+
+ /* The special values 'inherit' and 'initial' are always valid */
+ if (type == GTK_TYPE_CSS_SPECIAL_VALUE)
+ return TRUE;
+
+ /* XXX: Someone needs to fix that legacy */
+ if (G_VALUE_TYPE (&property->initial_value) == CAIRO_GOBJECT_TYPE_PATTERN &&
+ type == GTK_TYPE_GRADIENT)
+ return TRUE;
+
+ return FALSE;
+}
+
/**
* _gtk_css_style_property_compute_value:
* @property: the property
(GtkCssStyleProperty *property);
GType _gtk_css_style_property_get_computed_type (GtkCssStyleProperty *property);
GType _gtk_css_style_property_get_specified_type (GtkCssStyleProperty *property);
+gboolean _gtk_css_style_property_is_specified_type (GtkCssStyleProperty *property,
+ GType type);
void _gtk_css_style_property_compute_value (GtkCssStyleProperty *property,
GValue *computed,